// pages/publish_heart/publish_heart.js

// 云开发初始化
wx.cloud.init();

// 使用云数据库
const db = wx.cloud.database();

// 引入腾讯地图SDK核心类（进行定位）
let QQMapWX = require("qqmap-wx-jssdk");

// 引入获取当前时间类
const util = require('util.js');


Page({

    /**
     * 页面的初始数据
     */
    data: {
        // 用户昵称
        nickname:'',

        // 用户头像
        avatarUrl:'',

        // 发布时间
        Publish_date:'',

        // 待发布的文字内容
        inputText:'',

        // 待上传的图片列表
        temp_upload_picture_list:[],
        
        // 敏感图片检测列表
        temp_upload_picture_obj_list:[],

        // 图片云端列表
        upload_picture_list:[],

        // 图片下载列表
        load_picture_list:[],
        
        // 定位的位置
        Address:"",

        // 文本框高度
        textareaHeight:'580rpx',

        // 传视频标志
        state:'none',

        // 按钮样式
        buttonColor_1:'#fdda67',
        buttonColor_2:'#ffeaa4',

        // 发布功能栏
        publish_tab:[
            {id:1,src:'cloud://cloud1-0gi6arka36ad54a9.636c-cloud1-0gi6arka36ad54a9-1310110789/village characteristic/icon/publish_tab2.png'},
            {id:2,src:'cloud://cloud1-0gi6arka36ad54a9.636c-cloud1-0gi6arka36ad54a9-1310110789/village characteristic/icon/publish_tab3.png'},
            {id:3,src:'cloud://cloud1-0gi6arka36ad54a9.636c-cloud1-0gi6arka36ad54a9-1310110789/village characteristic/icon/publish_tab4.png'}
        ],

    },

    // 发布文章功能(不显示按钮)
    PublishArticle:function(){
        this.setData({
            textareaHeight:'580rpx',
            buttonColor_1:'#fdda67',
            buttonColor_2: '#ffeaa4',
            state: 'none'
        })
    },

    // 发布视频功能(显示按钮)
    PublishVideo:function(){
        this.setData({
            textareaHeight:'380rpx',
            buttonColor_1:'#ffeaa4',
            buttonColor_2: '#fdda67',
            state: 'flex'
        })
    },

    // 保存文字内容函数
    inputBindBlur: function(e) {
        this.setData({
            inputText: e.detail.value
        })
    },

    addTopic:function(){
        this.setData({
            inputText: this.data.inputText + '#'
        })
    },

    // 临时上传图片函数
    uploadPic:function(){
        let that = this 
        let temp_upload_picture_list = that.data.temp_upload_picture_list
         // 选择图片
         wx.chooseMedia({
            count: 9,
            mediaType: ['image'],
            sourceType: ['album', 'camera'],
            maxDuration: 30,
            camera: 'back',
            success: function (res) {
                // console.log(res)
                // 获取临时路径
                res.tempFiles.forEach(function(item){
                    // console.log(item)
                    const Path = item.tempFilePath
                    // let obj = {
                    //     path:item.tempFilePath,
                    //     size:item.size,
                    // } 
                    temp_upload_picture_list.push(Path)
                    // temp_upload_picture_obj_list.push(obj)
                }),
                // 将图片显示到屏幕上
                that.setData({
                    temp_upload_picture_list: temp_upload_picture_list,
                })
            }
        })     
    },

    // 删除图片函数
    deleteImg:function(e){
        // console.log(e)
        let temp_upload_picture_list = this.data.temp_upload_picture_list;
        let index = e.currentTarget.dataset.index;
        // console.log(index)
        for(let i=0;i<temp_upload_picture_list.length;i++){
            if(temp_upload_picture_list[i] === index){
                temp_upload_picture_list.splice(i, 1);
                break;
            }
        }
        this.setData({
            temp_upload_picture_list: temp_upload_picture_list
        })
    },

    // 获取定位
    getLocation:function(){
        let qqmapsdk
        // 实例化API核心类
        qqmapsdk = new QQMapWX({
            key: '32UBZ-SA5CP-ZBDDA-VXIC3-UFWLV-F5BWR'
        });
      
        let that = this;
        wx.choosePoi({
            success(res) {
                console.log(res)
                let tempData
                if(res.type == 1){
                    // 城市名称
                     tempData = res.city
                     console.log(tempData)
                     that.setData({
                        Address:tempData
                    });
                }
                if(res.type == 2){
                    // 位置名称
                    tempData = res.name
                    // 详细地址
                    // tempData = res.address
                    console.log(tempData)
                    that.setData({
                        Address:tempData
                    });
                }
                else{
                    tempData = ''
                    that.setData({
                        Address:tempData
                    });
                }
                
                // console.log(res)
                // qqmapsdk.reverseGeocoder({
                //     success: function(res){
                //         // console.log(res)
                //         // 详细地址
                //         let tempData = res.result.address + res.result.formatted_addresses.recommend
                //         // console.log(tempData)
                //         that.setData({
                //             Address:tempData
                //         });
                //     },
                //     fail: function(error) {
                //         // console.log("err")
                //         // console.error(error)
                //     },
                // })
            },fail(err){
                wx.showToast({
                  title: '获取定位失败',
                  icon:'error',
                })
            }
        })
    },

    // 发布函数
    Publish:function(){
        let that = this
        // 判断登录状态
        if(!wx.getStorageSync('login')){
            wx.showToast({
                title: '发布失败',
                icon: 'error',
                duration: 2000,
            })
            return;
        }
        // 判断文章内容
        else if(!that.data.inputText){
            wx.showToast({
                title: '内容不能为空哦',
                icon: 'error',
                duration: 2000,
            })
            return;
        }
        // 可以进行发布 (最重要的是要注意异步问题，比如上传图片和更新数据库这两个过程必须要转为同步，不然数据库没有数据！)
        else{
            wx.showLoading({
                title: '发布中...',
                    mask:true
            })
            const g_reg=/好贱|操|杀|贱|傻|疯|炮|奸|猪|笨|屁|麻痹|滚犊子|婊|台独|藏独/sm
            if (g_reg.test(that.data.inputText)) { // 如果检测有违规,就返回
                wx.showToast({
                    title: '包含敏感字哦',
                    icon: 'error',
                    duration: 2000
                })
                return
            }
            let promise = new Promise((reslove,reject)=>{
                wx.cloud.callFunction({
                    name: 'checkSensitivewords',
                    data: {
                        text: that.data.inputText
                    }
                }).then((res) =>{
                    console.log(res)
                    if (res.result.code == "200") {
                        //检测通过
                        console.log("检测通过" )
                        // for(let i = 0;i<that.data.temp_upload_picture_obj_list.length;i++){
                        //     //图片检测
                        //     let size = that.data.temp_upload_picture_obj_list[i].size
                        //     let path = that.data.temp_upload_picture_obj_list[i].path
                        //     if (!contentCheckHelper.imgTypeCheck(path)) {
                        //         // wx.hideLoading();
                        //         return pageHelper.showNoneToast('只能上传png、jpg、jpeg格式的图片', 3000);
                        //     }
                        //     let imageMaxSize = 1024 * 1000 * this.data.imgUploadSize;
                        //     console.log('IMG SIZE=' + size + ',' + size / 1024 + 'K');
                        //     if (!contentCheckHelper.imgSizeCheck(size, imageMaxSize)) {
                        //         // wx.hideLoading();
                        //         return pageHelper.showNoneToast('单张图片大小不能超过 ' + this.data.imgUploadSize + 'M', 3000);
                        //     }
                        // }

                        // for(let i = 0;i<that.data.temp_upload_picture_list.length;i++){
                        //     wx.cloud.callFunction({
                        //         name: 'checkImg',
                        //         data: {
                        //             contentType: "image/jpg",
                        //             arrayBuffer: that.data.temp_upload_picture_list[i]
                        //         },
                        //         success: function (res) {
                        //             console.log(res)
                        //             if (res.result.errCode == 0) {
                        //                 // srcTips[index] = "合法图片"
                        //                 reslove()
                        //             } 
                        //             else if (res.result.errCode == 87014) {
                        //                 // srcTips[index] = "违法图片"
                        //                 wx.showToast({
                        //                     title: '包含敏感图片哦',
                        //                     icon: 'error',
                        //                     duration: 2000
                        //                 })
                        //             } 
                        //             else {
                        //                 // srcTips[index] = "接口异常"
                        //               }
                        //         }
                        //     })
                            
                        // }


                        reslove()
                       
                
                        
                    } 
                    else {
                        //执行不通过
                        wx.showToast({
                            title: '包含敏感字哦',
                            icon: 'error',
                            duration: 2000
                        })
                        return
                    }
                })
            })
            promise.then(res=>{    
                // 调用formatTime函数，传入new Date()参数，返回当前日期和时间
                let date = util.formatTime(new Date());
                let timestamp = new Date().getTime();
                this.setData({
                    Publish_date: date,
                    Publish_timestamp:timestamp
                });
                let temp_upload_picture_list = this.data.temp_upload_picture_list
                let upload_picture_list = this.data.upload_picture_list
                let load_picture_list = this.data.load_picture_list
                //创建一个数组来存储一会的promise操作
                let promiseArr = []
                // 将图片上传至云存储空间
                //遍历选中的图片，用let定义变量会形成一个闭包，在该作用域执行完之前，变量的值不会发生改变，防止异步导致变量发生变化
                for (let index = 0; index < temp_upload_picture_list.length; index++) {
                    console.log("进入循环")
                    //往数据中push promise操作
                    promiseArr.push(new Promise((reslove,reject)=>{
                        wx.cloud.uploadFile({
                            // 指定上传到的云路径
                            cloudPath: 'village characteristic/Publish_pic/'+Date.now()+'_'+this.data.nickname+'_Publish_pic.png',
                            // 指定要上传的文件的小程序临时文件路径
                            filePath:temp_upload_picture_list[index],
                            success:res=>{
                                console.log('上传成功图片',res)
                                upload_picture_list.push(res.fileID)

                                // 获取图片下载地址
                                wx.cloud.getTempFileURL({
                                    fileList:[res.fileID],
                                success:res=>{
                                    // console.log("路径",res.fileList[0].tempFileURL)
                                    load_picture_list.push(res.fileList[0].tempFileURL)
                                    reslove();
                                    }
                                })
                            }
                        })
                    }))
                }
                //等promose数组都做完后做then方法
                Promise.all(promiseArr).then(res=>{
                // 将数据上传云数据库
                    db.collection('user-publish').add({
                        data:{
                            nickname:this.data.nickname,
                            avatarUrl:this.data.avatarUrl,
                            Publish_date:this.data.Publish_date,
                            Publish_timestamp:this.data.Publish_timestamp,
                            article_content:this.data.inputText,
                            picture_list:upload_picture_list,
                            load_picture_list:load_picture_list,
                            Position:this.data.Address,
                            goodNum:0,
                            commentsNum:0,
                            forwardNum:0,
                            good_list:[],
                            comments_list:[],
                        },
                        success: res=>{
                            // console.log(res);
                            wx.showToast({
                                title: '发布成功',
                                icon: 'true',
                                duration: 2000,
                            })
                            setTimeout(function(){
                                // 清除页面内容
                            that.setData({
                                inputText:'',
                                temp_upload_picture_list:[],
                                upload_picture_list:[],
                                load_picture_list:[],
                                Address:''
                            })
                                // 跳转社区页面
                                wx.switchTab({
                                    url:"/pages/community/community"
                                })
                            },2000)
                            
                        }
                    })
                })
            })    
        }    
    },
    
    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        this.setData({
            nickname: wx.getStorageSync('nickname'),
            avatarUrl: wx.getStorageSync('avatarUrl'),
        })
    },
    

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        if(!wx.getStorageSync('login')){
            wx.showModal({
                title: '温馨提示',
                content: '请您先登录,否则无法进行发布',
                success(res) {
                    console.log(res)
                    // 如果用户点击了确定按钮
                    if (res.confirm){
                        wx.switchTab({
                            url:'/pages/user/user'
                        })
                    }
                }
            })
        }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})